package com.mdd.product.service;


import com.mdd.common.core.PageResult;
import com.mdd.product.validate.ProductSpuCreateValidate;
import com.mdd.product.validate.ProductSpuSearchValidate;
import com.mdd.product.validate.ProductSpuUpdateValidate;
import com.mdd.product.validate.car.CarSpuValidate;
import com.mdd.product.validate.car.SpuSaleValidate;
import com.mdd.product.vo.CarSpuDetailVo;
import com.mdd.product.vo.CarSpuListVo;
import com.mdd.product.vo.ProductSpuDetailVo;
import com.mdd.product.vo.ProductSpuListedVo;
import com.mdd.system.vo.SystemAuthAdminInformVo;
import java.util.List;

/**
 * 商品spu服务接口类
 * @author LikeAdmin
 */
public interface IProductSpuService {

    /**
     * 商品spu列表
     *
     * @author LikeAdmin
     * @param searchValidate 搜索参数
     * @return PageResult<ProductSpuListedVo>
     */
    PageResult<ProductSpuListedVo> page(ProductSpuSearchValidate searchValidate, SystemAuthAdminInformVo systemAuthAdmin);

    /**
     * 商品列表
     * @return
     */
    List<ProductSpuListedVo> list(SystemAuthAdminInformVo systemAuthAdmin);

    /**
     * 车品分页列表
     * @param searchValidate
     * @param searchValidate
     * @return
     */
    PageResult<CarSpuListVo> cars(ProductSpuSearchValidate searchValidate, SystemAuthAdminInformVo systemAuthAdmin);
    /**
     * 商品spu详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return ProductSpuDetailVo
     */
    ProductSpuDetailVo detail(Long id);
    /**
     * 车品spu详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return ProductSpuDetailVo
     */
    CarSpuDetailVo carSpuDetail(Long id);
    /**
     * 商品spu新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(ProductSpuCreateValidate createValidate, SystemAuthAdminInformVo systemAuthAdmin);
    void addCarSpu(CarSpuValidate carSpuValidate, SystemAuthAdminInformVo systemAuthAdmin);
    /**
     * 商品spu编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(ProductSpuUpdateValidate updateValidate);
    /**
     * 商品spu编辑
     *
     * @author LikeAdmin
     * @param carSpuValidate 参数
     */
    void editCarSpu(CarSpuValidate carSpuValidate);
    /**
     * 商品spu删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Long id);

    /**
     * 商品上下架
     * @param id
     * @param status
     */
    void onSale(SpuSaleValidate saleValidate);
}
